Computer models permit a designer to create graphical and textual representations of real-world systems. The models may include mathematical algorithms that have a clearly defined structure composed of many basic primitive components. Typical graphical models include block diagram models, state chart diagrams, and data flow diagrams. These computer models can include complex mathematical expressions with non-linearities and subtle interactions between processing elements. Within the design and simulation environment there is a need to perform various analysis techniques to prove that the system represented by the model performs as expected. Tools for performing these types of analyses work by mathematically analyzing the representation in the model design either by exhaustively searching for undesirable execution sequences or by formally proving properties.
Frequently the underlying technique for analyzing a model design has limitations as to what can be analyzed in that the analysis is only compatible with certain types of model components. To work around the limitations of an analysis technique, designs must be modified to remove the model constructs that are not compatible. For example, a technique that cannot handle non-linear arithmetic will require the transformation of a multiply operation into some other simpler alternative component. The process of preparing a design for analysis is called abstraction. This is often a tedious manual process that is error prone.